//
//  Y2StateMachine.h
//  Y2EventBus
//
//  Created by harry.tong on 2021/6/18.
//

#import <Foundation/Foundation.h>

typedef enum : NSUInteger {
    /// 未初始化
    ModulUnInitStatus = 100,
    
    /// 初始化中,
    ModuleInitingStatus,
    
    /// 初始化成功
    ModuleInitSuccessStatus,
    
    /// 初始化失败
    ModuleInitFailStatus,
    
    ///  初始化成功，等待下一步
    ModuleInitStandByStatus
    
} Y2ModuleInitStatus;


typedef enum : NSUInteger {
    ///  未登录状态
    ModuleUnLoginStatus = 200,
    
    /// 登录中
    /// 作用域 渠道SDK
    ModuleLoginingStatus,
    
    /// 登录成功
    /// 作用域 渠道SDK
    ModuleLoginSuccessChannelStatus,
    
    /// 登录失败
    /// 作用域 渠道SDK
    ModuleLoginFailChannelStatus,
    
    /// 登录状态验证中，
    /// 作用域 SuperSDK
    ModuleLoginCheckingStatus,
    
    /// 登录状态验证成功
    /// 作用域 SuperSDK
    ModuleLoginCheckSuccessStatus,
    
    /// 登录状态校验失败
    /// 作用域 SuperSDK
    ModuleLoginCheckFailStatus,
    
    /// 登录成功
    ModuleLoginSuccessStatus,

    /// 登录失败
    ModuleLoginFailStatus,
    
    ///  取消登录
    ModuleLoginCancelStatus,
    
    /// 已退出登录，
    ModuleLogoutStatus,
    
    /// 切换账号中
    ModuleSwitchAccountingStatus,
    
    /// 切换账号成功
    /// 作用域渠道SDK
    ModuleSwitchAccountSuccessStatus,
    
    /// 切换账号失败
    /// 作用域渠道SDK
    ModuleSwitchAccountFailStatus,
} Y2ModuleLoginStatus;


typedef enum : NSUInteger {
    /// 支付平台支付中
    /// 作用域 渠道SDK
    ModulePayingPlatformStatus = 300,
    
    /// 支付平台返回成功
    /// 作用域 渠道SDK
    ModulePayPlatformSuccessStatus,
    
    /// 支付平台返回失败
    /// 作用域 渠道SDK
    ModulePayplatformFailStatus,
    
    /// 支付校验中
    /// 作用域 渠道SDK
    ModulePayCheckingForChannelStatus,
    
    /// 支付校验成功
    /// 作用域 渠道SDK
    ModulePayCheckSuccessForChannelStatus,
    
    /// 支付校验失败
    /// 作用域 渠道SDK
    ModulePayCheckFailForChannelStatus,
    
    /// 支付校验中
    /// 作用域 SuperSDK
    ModulePayCheckingStatus,
    
    /// 支付校验成功
    /// 作用域 SuperSDK
    ModulePayCheckSuccessStatus,
    
    /// 支付校验失败
    /// 作用域 SuperSDK
    ModulePayCheckFailStatus,
    
    /// 支付校验失败
    ModulePayCancelStatus
} Y2ModulePayStatus;


@interface Y2StateMachine : NSObject

/// 获取当前状态
+(int) currentStatus;

/// 状态变更
+(void) moduleStatusTransition:(int)status;

/// 状态变更
+(void) moduleStatusTransition:(int)status info:(id)obj;


@end

